const MAX_WORDS_NUM = 150 // 输入内容的最多字符
const MAX_IMG_NUM = 9 // 上传图片的最大数量
const db = wx.cloud.database() // 云函数db
// let content = ''
let userInfo = {} // 头像和用户名
Page({

	/**
	 * 页面的初始数据
	 */
	data: {
		imagesList: [], // 图片列表
		canUpload: true, // 控制上传图表的显示
		wordsLen: 0, // 输入内容的长度
		content: '', // 输入内容
		footerBottom: 0, // footer底部距离
		information: {} // 头像和用户名
	},
	onLoad(options) {
		// console.log(options)  
		userInfo = options // 传入云函数的头像和用户名
		this.setData({ // 页面的头像和用户名
			information: options
		})
	},
	onInput(e) { // 输入事件
		//console.log(e) 
		let wordsLen = e.detail.value.length // 拿到输入的内容的长度
		// console.log(e, wordsLen)
		if (wordsLen > MAX_WORDS_NUM) return // 如果大于max 就不能输入了
		this.setData({
			wordsLen: wordsLen,
			content: e.detail.value
		})
	},
	onChooseImage() { // 选择图片
		let max = MAX_IMG_NUM - this.data.imagesList.length
		wx.chooseImage({ // 调用选择图片API
			count: max,
			sizeType: ['original', 'compressed'],
			sorceType: ['album', 'camera'],
			success: res => {
				// console.log(res)
				this.setData({
					imagesList: this.data.imagesList.concat(res.tempFilePaths)
				})
				max = MAX_IMG_NUM - this.data.imagesList.length
				this.setData({
					canUpload: max <= 0 ? false : true
				})
			}
		})
	},
	onPreviewImage(e) { // 浏览图片
		let imgsrc = e.target.dataset.imgsrc // 页面绑定的current
		let imagesList = this.data.imagesList
		wx.previewImage({
			urls: imagesList,
			current: imgsrc
		})
	},
	onDelImage(e) { // 删除图片
		let index = e.target.dataset.index
		let imagesList = this.data.imagesList
		imagesList.splice(index, 1)
		this.setData({
			imagesList: imagesList
		})
		if (imagesList.length == MAX_IMG_NUM - 1) {
			this.setData({
				canUpload: true
			})
		}
	},
	sendContent() { // 发布事件
		// console.log(1)
		let content = this.data.content
		if (content.trim() == '') {
			wx.showModal({
				title: '提示',
				content: '输入内容不能为空'
			})
			return
		}
		wx.showLoading({
			title: '正在发布中...',
			mask: true
		})
		let promiseArr = []
		let fileIds = []
		let imagesList = this.data.imagesList
		//图片上传
		for (let i = 0, len = imagesList.length; i < len; i++) {
			let p = new Promise((resolve, reject) => {
				let item = imagesList[i]
				//文件扩展名
				let suffix = /\.\w+$/.exec(item)[0]
				wx.cloud.uploadFile({ // 上传
					cloudPath: 'blog/' + Date.now() + '-' + Math.random() * 1000000 + suffix, // 选择对应云存储的目录和文件名
					filePath: item,
					success: (res) => {
						//console.log(res)
						fileIds = fileIds.concat(res.fileID)
						resolve()
					},
					fail: (err) => {
						//console.log(err)
						reject()
					}
				})
			})
			promiseArr.push(p)
		}
		//存入云数据库
		Promise.all(promiseArr).then((res) => {
			db.collection('blog').add({
				data: {
					...userInfo,
					content,
					img: fileIds,
					createTime: db.serverDate()
				}
			}).then((res) => {
				wx.hideLoading()
				wx.showToast({
					title: '发布成功'
				})
				//返回列表 并且刷新列表
				wx.navigateBack()
				const pages = getCurrentPages() //获取界面
				// console.log(pages)
				// -1 是 当前页  -2是上一页 因为back了 所以是刷新上一页
				const prevPage = pages[pages.length - 2]
				prevPage.onPullDownRefresh();
			})
		}).catch((err) => {
			wx.hideLoading()
			wx.showToast({
				title: '发布失败'
			})
		})
	},
	clearContent() { // 清除内容
		this.setData({
			content: '',
			wordsLen: 0
		})
	},
	onFocus(event) { // 获取焦点 这是解决在真机上调用键盘后footer会被隐藏
		//模拟器获取的键盘高度为0
		// console.log(event)
		this.setData({
			footerBottom: event.detail.height
		})
	},
	onBlur() { // 失去焦点
		this.setData({
			footerBottom: 0
		})
	},
	goToMine () { // 点击去main页面
		wx.switchTab({
			url: '/pages/main/main'
		})
	}
})
